<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>局部变量和全局变量</title>
	</head>
	<body>
		<script type="text/javascript">
			/*
				全局变量：
					在函数体之外声明的变量，叫做全局变量。
					全局变量在浏览器打开的时候分配空间，直到浏览器关闭的时候才会销毁。
				局部变量：
					在函数体当中声明的变量，叫做局部变量。
					局部变量在函数被调用的时候分配空间，函数执行结束之后，内存释放。
				
				javascript也是遵守就近原则的。
				
				变量声明了，但是没有手动赋值，系统默认赋值undefined。
				变量没有声明，直接访问，这个时候会报错。（用F12可以查看控制台的错误信息！）
				
				在javascript当中，如果一个变量声明的时候没有使用var关键字的话，这个变量
				不管是在哪里声明的，都是全局变量。这种全局变量在声明的时候必须手动赋值，不能
				采用系统默认值。
			*/
		   // 全局变量
		   var username = "zhangsan"; 
		   
		   // 定义函数
		   function sayHello(){
			   // 局部变量
			   var username = "lisi";
			   alert("welcome, " + username); //就近原则(这是任何一个编程语言都具备的！)
			   // 局部变量
			   var i = 100;
		   }
		   
		   sayHello();
		   
		   //在这里访问username
		   alert("username = " + username)
		   
		   // 在这里访问i变量可以吗？
		   // 报错了:i is not defined
		   //alert(i);
		   
		   var k;
		   alert(k) // 声明了一个变量,但是没有手动赋值,系统默认赋值undefined
		   
		   // 没有声明这个变量,访问的时候会报错.
		   // 报错:kkk is not defined
		   //alert(kkk)
		   
		   function doSome(){
			    // 声明变量的时候,没有使用var关键字
				email = "zhangsan@123.com";
				//age;
		   }
		   
		   // 调用函数doSome
		   doSome()
		   
		   // 访问email变量
		   alert("email = " + email)
		   
		   //alert("age = " + age)
		   
		</script>
		
		<input type="button" value="hello btn" onclick="sayHello()"/>
		
	</body>
</html>
